Supporting multiple print engine configurations through compatible delay window storage modes

ABSTRACT

The system, methods and hardware described herein relate to processing raster data on an EP (electrophotographic) process printing device. A hardware ASIC supports multiple EP print engine configurations through a common delay window block that presents a variable two-dimensional view of raster data formatted in a consistent manner that is compatible for processing by various enhancement blocks. Benefits of the disclosed system, methods and hardware include decreased development costs for EP printers due to a reduced need to design, test, and manufacture different ASICs for numerous EP print engine configurations.

TECHNICAL FIELD

The present disclosure relates to printing, and more particularly, toproviding compatible storage modes within an image data delay window tosupport multiple print engine configurations.

BACKGROUND

Current electrophotographic (EP) process printers (i.e., laser printers)allow users to select (e.g., through a printer driver interface) a printmode that determines the resolution (i.e., dpi or dots per inch) andbit-depth (i.e., bits per pixel) of print jobs sent to a printer. Forexample, by selecting a print command from within an applicationprogram, a user can typically make print quality selections through aprinter driver interface. The options may include, for example,“ProRes”, “FastRes”, and “600 dpi”. “ProRes” may provide 1200 dpi, 1 bitper pixel data, while “FastRes” may provide 600 dpi, multi-bit (e.g., 2,4, or 8 bits) per pixel data. Thus, selection of a print mode causes aprint job to be “RIP”'ed (i.e., raster image processed) or “rasterized”to a certain resolution (both horizontal and vertical) and bit-depthbased on the print mode selection. The printer driver typically formatsthe print job in a page description language (PDL) which is thenrasterized to an appropriate resolution and bit-depth on the printer.

Various algorithms are implemented in a printer ASIC (applicationspecific integrated circuit) through image enhancement blocks thatfurther process the rasterized data into pulse width modulation codes(Pcodes) to modulate a laser on and off as it scans anelectrophotographic drum. The enhancement blocks are made up of logicgates capable of processing the rasterized data in real time. Theenhancement blocks may include, for example, a REt (ResolutionEnhancement technology) block, a PhotoTone block, a ResDouble block, aNEM (native enhancement mode) block, and so on. In addition togenerating Pcodes to drive a laser modulation circuit, the enhancementblocks also typically perform some type of adjustment to the image datasuch as a smoothing or filtering function.

Moreover, each enhancement block typically processes a particular typeof data, and therefore expects to see raster data in a particularformat. For example, RET processes black and white data and thereforewants to see raster data formatted with a bit-depth of 1 bit per pixel.PhotoTone, however, is a half-toning algorithm used for processing grayscale images. It therefore expects to see raster data formatted in amulti-bit per pixel bit-depth.

The different data format requirements for each enhancement blockpresent a problem of how to provide raster data in a suitable bit-depthfor each block. In the past, this problem has been addressed by printerASICs that provide multiple, two-dimensional windows (each with theirown configuration) that are alternately enabled to present anappropriate view of raster data to a given enhancement block. Thus, anenhancement block that needs to process single bit per pixel data willview a window that provides only single bit per pixel data, while anenhancement block that processes multi-bit per pixel data will view awindow that provides only multi-bit per pixel data. However, thisapproach becomes difficult when more than one or two configurations areneeded. In addition, this approach requires multiplexing around the RAMin the ASIC, which creates critical timing issues and makes the ASICmore difficult to design.

The problem is further complicated by the fact that the enhancementblocks need to generate Pcode data in a certain format for the laserdriver circuits (i.e., pulse width modulators). The laser drivers haverequirements that are defined by the laser configuration and nativeresolution of the print engine. For example, some print engines havelasers that draw 1200 dpi lines in raster order, while others draw 600dpi lines. Other resolutions are possible, but not currently common.Because the laser drivers are able to generate laser modulations withvery fine horizontal resolution, input data having a lower resolution istypically converted into an equivalent higher resolution data forprocessing by the enhancement blocks. The laser drivers can then run ata set resolution regardless of the resolution of the input data. Thus,variations in horizontal resolutions of the input data are typically nota problem.

However, various print engines may have 1, 2, or more parallel laserbeams being driven concurrently. This creates a problem regarding thevertical size (resolution) of the lines of raster data that the lasersare drawing out. The amount of raster data being drawn out or consumedby the lasers must be equivalent to the amount of raster data being readin and processed by the printer ASIC. The measure of the data is basedon the area (e.g., in square inches) that the data covers. For example,the amount of data in one line of 300 dpi raster being read in isequivalent to an amount of data in two lines of data being drawn out orconsumed by a dual 600 dpi laser configuration. One pass of the duallaser draws out two lines of data, each covering 1/600^(th) of an inch,which is equivalent to the single 1/300^(th) of an inch line of rasterdata being read in. If the input data resolution were 600 dpi, two linesof raster data would need to be read in to accommodate each pass of thedual 600 dpi laser configuration. Regardless of the data resolution andthe print engine configuration, however, the amount of raster data beingconsumed must be equivalent to the amount of raster data being input.

In previous printers, these complications were addressed by developing anew ASIC design for each new printer engine configuration. Thus, aparticular ASIC might be designed to accommodate several input datamodes as described above, but would be limited to functioning with aspecific printer engine configuration. In addition to the problems oflimited data input modes and the need to design a new ASIC for each newengine configuration, this approach ignores the problem of how tosupport a data format mode that was not apparent at the time theprinting device was defined and the ASIC was designed. Furthermore,previous approaches have the additional problem of being difficult todebug due to a significant number of RAM mappings that make trackingsimulations problematic.

Accordingly, the need exists for a way to process printable data havingvarious data formats through various enhancement functions for printingin an electrophotographic process printer having various engineconfigurations.

SUMMARY

Storage modes for an image data delay window are set based on the formatof incoming raster data and a print engine configuration.

In a particular embodiment, an ASIC (application specific integratedcircuit) configured to process data in an EP (electrophotographic)process printer includes a common delay window block that provides avariable two dimensional view of raster data formatted in a consistentmanner that is compatible for processing by various enhancement blockswithin the ASIC. The delay window block makes the ASIC adaptable for usein EP printers having a variety of different laser engine configurationsand enables the ASIC to process variously formatted raster data throughvarious image enhancement blocks regardless of the printer's engineconfiguration. The ASIC uses the format of input raster data and theengine configuration of the printer to set up a storage mode for thedelay window that meets the processing requirements of the various imageenhancement blocks being implemented in the ASIC. The common formattingof data at key locations in the EP print process (i.e., raster datainput to the ASIC, RAM data storage on the ASIC, delay window outputfrom the ASIC) allows for considerable flexibility in supporting printengine and data formats without extreme complexity in the ASIC windowinghardware.

In another embodiment, a storage mode is set for a delay window blockbased on the format of raster data read into an ASIC, enhancement blocksimplemented within the ASIC, and a native resolution and laserconfiguration of a print engine being driven by the ASIC. The storagemode defines the size of the delay window by the number of rows andcolumns of raster data (pixels) presented in the window. The storagemode also defines the manner in which the raster data is presented,including the resolution and bit-depth of the raster data.

BRIEF DESCRIPTION OF THE DRAWINGS

The same reference numbers are used throughout the drawings to referencelike components and features.

FIG. 1 illustrates a system environment that is suitable forimplementing common image window hardware within an EP(electrophotographic) process printing device.

FIG. 2 is a block diagram illustrating an exemplary embodiment of a hostcomputer and printing device such as those shown in the systemenvironment of FIG. 1.

FIG. 3 illustrates a partial process of storing raster data into a RAMand a delay window on a printing device such as that shown in the systemenvironment of FIG. 1.

FIG. 4 illustrates additional details of the partial process of storingraster data shown in FIG. 3.

FIG. 5 illustrates an example of a delay window presenting atwo-dimensional view of pixel data in a scaled and an un-scaled format.

FIG. 6 illustrates an example of a delay window providing an additionalview to support a print engine that has a dual laser configuration.

FIG. 7 illustrates a partial process for shifting data using the delaywindow of FIG. 6.

FIG. 8 is a block diagram illustrating how an enhancement block isselected to be used to drive laser(s) in a print engine.

FIG. 9 is a flow diagram illustrating an example method for processingraster data on a printer with common image window hardware.

FIG. 10 is a flow diagram illustrating an additional example method forprocessing raster data on a printer with common image window hardware.

DETAILED DESCRIPTION

The system, methods and hardware described herein relate to processingraster data on an EP (electrophotographic) process printing device. Ahardware ASIC supports multiple EP print engine configurations through acommon delay window block that presents a variable two-dimensional viewof raster data formatted in a consistent manner that is compatible forprocessing by various enhancement blocks. Benefits of the disclosedsystem, methods and hardware include decreased development costs for EPprinters due to a reduced need to design, test, and manufacturedifferent ASICs for numerous EP print engine configurations.

Because of faster processing speeds, the presently preferredimplementation is hardware blocks in an ASIC. Thus, various embodimentswill be described with reference to hardware blocks in an ASIC. However,the system and methods disclosed herein may also be implemented throughcomputer/processor-executable instructions such as software or firmwarestored on any appropriate computer/processor-readable medium.

Exemplary System Environment for Implementing Common Image WindowHardware

FIG. 1 illustrates a system environment that is suitable forimplementing common image window hardware within an EP(electrophotographic) process printing device. The system 100 of FIG. 1includes printing device 102 operatively coupled to a host computer 104through a direct or network connection 106. The direct or networkconnection 106 can include, for example, a printer cable, a LAN (localarea network), a WAN (wide area network), an intranet, the Internet, orany other suitable communication link. This disclosure is applicable tovarious types of printing devices 102 (printers) capable of implementingan EP printing process for rendering PDL (page description language)data in printed form on a print medium. Therefore, printer 102 caninclude devices such as laser-based printers, multifunction peripheraldevices and other EP-capable printing devices.

Host computer 104 can be implemented as a variety of general purposecomputing devices including, for example, a personal computer (PC), aPDA (personal digital assistant), a workstation, a server, a Web server,and other devices configured to communicate with printing device 102.Host computer 104 typically provides a user with the ability tomanipulate or otherwise prepare in electronic form, an image or documentto be rendered as an image that is printed or otherwise formed onto aprint medium by printing device 102 after transmission over network 106.In general, host computer 104 outputs host data to printing device 102in a driver format suitable for the device 102, such as PCL (printercontrol language) or PostScript. Printing device 102 converts the hostdata and outputs it onto an appropriate recording media, such as paperor transparencies.

Exemplary Embodiment of a System for Implementing Common Image WindowHardware

FIG. 2 illustrates in block diagram form, an exemplary embodiment of ahost computer 104 and printer 102 such as those shown in the systemenvironment of FIG. 1.

Host computer 104 includes a processor 200, a volatile memory 202 (i.e.,RAM), and a nonvolatile memory 204 (e.g., ROM, hard disk, floppy disk,CD-ROM, etc.). Nonvolatile memory 204 generally provides storage ofcomputer/processor-readable instructions, data structures, programmodules and other data for host computer 104. Host computer 104 mayimplement various application programs 206 stored in memory 204 andexecutable on processor 200 to create or acquire a document or image(e.g., text and graphics) displayable on a computer screen andtransferable to printer 102 for producing a hard copy of thedocument/image. Such applications 206 might include software programsimplementing word processors, illustrators, spread sheets, browsers,computer-aided design tools and the like. Host computer 104 may alsoimplement one or more software-based device drivers 208 stored in memory204 and executable on processor 200 to format document data into a PDL(page description language) such as PostScript or PCL (printer controllanguage) or another appropriate format which it outputs to printer 102.Such device drivers 208 can also be implemented on the specific devicethey are “driving”, such as on printer 102.

Printer 102 has a controller 210 that processes data from host computer104. The controller 210 typically includes a data processing unit or CPU212, a volatile memory 214 (i.e., RAM), and a nonvolatile memory 216.Volatile memory 214 is illustrated as including raster data 218. Rasterdata 218 is the rasterized form of print job data received from hostcomputer 104 that is processable by image processing ASIC (applicationspecific integrated circuit) 220 for rendering onto a print mediumthrough print engine 232. Raster data 218 and its processing andrendering by ASIC 220 and print engine 232, respectively, are discussedmore fully herein below. Nonvolatile memory 216 can include variouscomputer storage media such as ROM, flash memory, a hard disk, aremovable floppy disk, a removable optical disk and the like.Nonvolatile memory 216 generally provides storage ofcomputer/processor-readable instructions, data structures, programmodules and other data for printing device 102. Accordingly, memory 216includes job setup module 219. Job setup module 219 is generallyconfigured to execute with each print job received by printer 102 andmake storage mode settings for ASIC 220 as discussed more fully below.

Image processing ASIC 220 on controller 210 includes various hardwareblocks 222–230. Hardware blocks 222–230 are blocks of logic gates withinASIC 220 configured to implement various processing and storagefunctions in real time. The general process for the design andmanufacture of such hardware blocks is well-known to those skilled inthe art of ASIC development.

Brief Description of Print Process

A brief description of a print process within printer 102 will now beprovided with primary reference to FIGS. 2, 3 and 4. The descriptionwill be helpful in understanding the discussion of the individualcomponents of ASIC 220 provided below.

A print job is received by printer 102 and stored as raster data 218. Asdiscussed more fully below, job setup module 219 executes upon receiptof the print job to make storage mode settings for ASIC 220. Generally,the storage mode settings include the setting of selection bits on ASIC220 that control window view offsets within delay window 226, delaywindow 226 size, whether or not more than one line of raster data 218 isread in from memory 214 concurrently, and the resolution and bit depthof pixel data in delay window 226. Raster data 218 is read from memory214 into ASIC 220 and scaled by pixel bit depth scaling block 222. FIG.3 shows scaled raster data being stored in RAM 224 and the delay window226 concurrently. The RAM 224 stores a number of full lines of rasterdata 218 while the delay window 226 stores only a partial number ofcolumns of the raster data 218 stored in RAM 224.

The delay window 226 is a two-dimensional pixel array that temporarilystores pixel data (i.e., raster data) while various image enhancementblocks 228 implement image processing algorithms on the pixel data.Although the delay window 226 is illustrated throughout as having thesame number of rows as there are lines in the RAM 224, delay window 226might also include additional rows of data. Thus delay window 226 mightbe “taller” than RAM 224 in rows of data, but it is not as “wide” as RAM224 in columns of data. Delay window 226 typically stores on the orderof 10 rows of pixels by 10 columns of pixels.

The solid arrows in FIG. 3 are intended to indicate that the raster datalines in RAM 224 shift through delay window 226, column by column. Thedelay window 226 effectively traverses its way over all the pixel datain the RAM 224 as each column of data shifts into the window 226 andthen out of the window 226. The view of the raster data as it shiftsthrough window 226 is presented to one or more enhancement blocks 228(FIG. 2). The enhancement blocks 228 are configured to process the datainto codes that drive one or more lasers in print engine 232 (FIG. 2).Output decision block 230 (FIG. 2) examines the raster data as it shiftsthrough window 226 and determines which enhancement block 228 outputwill be used to drive the laser(s).

FIG. 4 is intended to illustrate that once all the columns of rasterdata lines in RAM 224 have been shifted through delay window 226, a newline of raster data 218 shifts into RAM 224 replacing the oldest line.Concurrently, a partial line, or row, of the old raster data shifts outof delay window 226 and a partial line, or row, of the new line ofraster data 218 shifts into delay window 226. Thus, raster data line 400illustrates a new line/row of raster data 218 (pixels shown as “X”s)being shifted concurrently into RAM 224 and delay window 226. At thesame time, raster data line 402 represents an old line/row of rasterdata 218 (pixels shown as “Z”s) being shifted concurrently out of RAM224 and delay window 226. Once the old raster line 402 is replaced withthe new raster line 400, the process of shifting all the raster datathrough window 226, column by column, begins again. In this manner,entire pages of raster data are processed through ASIC 220 and renderedon a print medium through print engine 232.

Although the figures (e.g., FIGS. 4 and 7) and their relevant discussiongenerally indicate that entire new lines of raster data 218 shift intoRAM 224 replacing older lines once delay window 226 “traverses” RAM 224,this is not intended to limit the manner by which data shifts in and outof RAM 224 and delay window 226. For example, a partial row or line ofraster data 218 can also be continually shifted into RAM 224 as soon as,or at the same time as, a new column of data shifts into delay window226.

Delay Window Storage Mode

A delay window 226 storage mode setting is made by job setup module 219for each print job received by printer 102. Job setup module 219 setsstorage modes through selection bits set within ASIC 220. The storagemode includes general size and data format configurations for the delaywindow 226 and RAM 224. Job setup module 219 makes the storage modesettings based on the print engine 232 configuration and data formatvariables. Print engine configuration variables include the number oflaser beams and the native resolution of the engine 232. Data formatvariables include the resolution and bit depth of the incoming rasterdata 218. Therefore, for each print job, job setup module 219 examinesthe data format of the print job and accesses print engine 232configuration information in order set the delay window storage mode.

The storage mode set by job setup module 219 for the delay window 226defines the number of concurrent lines to be read into the ASIC 220,which is equivalent to the lines-per-pass or lines consumed by the printengine 232 with each pass of the laser(s). The storage mode furtherdefines line offsets for different views within the window 226, the sizeof the window 226 in rows and columns of pixels, and the resolution andbit depth of pixel data in delay window 226. As discussed below, thestorage mode may also choose between enhancement blocks 228 havingsimilar functions and may limit the selection process for outputdecision block 230 to a subset group of enhancement blocks 228.

Scaling Pixel Bit Depth

Referring now to FIG. 2, the pixel bit depth scaling block 222 in ASIC220 implements an algorithm that converts the bit depth of incomingraster data 218 into a bit depth that matches a target bit depth of thedata to be presented in the delay window 226. The target bit depth istypically the largest bit depth required by any of the implementedenhancement blocks 228. The conversion might also be made using alook-up table rather than by using an algorithm.

An example of a simple algorithm that might be implemented by pixel bitdepth scaling block 222 is one that duplicates bits of a lower bit depthto a higher target bit depth. Thus, duplicating 1 bit-per-pixel data in4 locations converts the 1 bit-per-pixel data into 4 bit-per-pixel data.FIG. 5 illustrates an example of a delay window 226 presenting atwo-dimensional view (5 rows by 7 columns) of pixel data. Delay window226(1) shows pixels with a 1 bit-per-pixel bit depth that have not beenscaled up by bit depth scaling block 222. Delay window 226(2) shows thesame pixels after they have been scaled up to a target bit depth of 4bits-per-pixel by bit depth scaling block 222. FIG. 5 is intended toillustrate how single bit depth data will appear in a delay window 226if in one instance it is not scaled up, as in window 226(1), and inanother instance it is scaled up to a target bit depth of 4bit-per-pixel bit depth by scaling block 222, as in window 226(2). It islikely, however, that a target bit depth will be greater than a singlebit-per-pixel value, so a single bit depth window such as window 226(1)is unlikely. As an additional example of duplicating bits of a lower bitdepth to a higher bit depth, if a 2 bit-per-pixel input value is 01binary (or 1 hexadecimal), then a target 8 bit-per-pixel for the delaywindow 226 would be 01010101 binary (or 55 hexadecimal). The pixel bitdepth scaling block 222 performs the bit depth conversion for each lineof raster data 218 read into ASIC 220 before the raster data is storedin the delay window 226.

The purpose of the scaling is to ensure that incoming raster data 218represents (within the delay window 226) an accurate value,concurrently, for both single bit-per-pixel enhancement blocks 228 suchas REt and ResDoubling, and multiple bit-per-pixel enhancement blocks228 such as PhotoTone. The pixel bit depth scaling block 222 scalesincoming raster data 218 up to a target bit depth that meets the maximumbit depth requirement of any of the implemented enhancement blocks 228.Thus, single bit depth raster data 218 may be scaled up to multiple bitdepth data in order to satisfy both single bit and multi-bitrequirements of the various enhancement blocks 228. The bit depthrequirements for various enhancement blocks 228 are outlined hereinbelow in Tables 1–4.

Intermediate Bit Depth Scaling for Efficient RAM Storage

In addition to scaling incoming raster data 218 to a target bit depthfor presentation in delay window 226, the raster data 218 is oftenscaled in an intermediate step before being stored in RAM 224.Generally, raster data 218 is scaled and stored concurrently into delaywindow 226 and RAM 224. However, because the pixel bit depth scalingblock 222 often scales incoming raster data 218 up to a target bit depththat meets the maximum bit depth requirement of any of the implementedenhancement blocks 228, the amount of memory space needed in RAM 224 tostore the scaled-up raster data 218 would increase.

Scaling up the data and then storing it in RAM 224 would not be anefficient use of RAM 224. Therefore, the data being stored into RAM 224undergoes an additional step of scaling unless the input bit depth isthe same as the target bit depth. The scaling of data into RAM 224scales data down to reduce the amount of memory space in RAM 224required for storage. If the input bit depth is already the same as thetarget bit depth, then data being stored in RAM 224 is not scaled down.Prior to shifting the data stored in RAM 224 into the delay window 226,data that has been scaled down to RAM 224 is scaled back up to thetarget bit depth that meets the maximum bit depth requirement of any ofthe implemented enhancement blocks 228. Because the raster data is ofteninitially scaled up by the pixel bit depth scaling block 222, scalingthe data down to increase RAM 224 storage efficiency does not reduce theinformation content of the incoming raster data 218.

Image Enhancement Blocks

The enhancement blocks 228 in ASIC 220 generally implement various imageprocessing algorithms in conjunction with device driver 208 or otherapplication programs 206. The enhancement blocks 228 process raster data(i.e., pixel data) and generate pulse width modulation (PWM) codes, orPcodes, that drive PWM circuits (i.e., laser driver circuits) in printengine 232. Pcodes define a pulse width and a horizontal location orjustification of the pulse within a given pixel. Based on the Pcodes,laser driver circuits in print engine 232 are able to generate lasermodulations with very fine granularity.

Enhancement blocks 228 may include, for example, one or more REt(Resolution Enhancement technology) blocks, PhotoTone blocks, Sidebandblocks, ResDouble blocks, NEM (Native Enhancement Mode) blocks,JustifiedDither blocks, and the like. By way of a brief description ofthese enhancement blocks, REt implements an algorithm that smoothespixel edges for binary (1 bit-per-pixel) data (i.e., only black andwhite data). Thus, REt typically operates with text or line data.PhotoTone is a half-toning algorithm that takes multiple bit-per-pixeldata and generates half-tones for images. PhotoTone determines how muchof a given pixel will be created and what part of the pixel (e.g., theleft, right, middle, etc.) will be created. Sideband is an alternativehalf-toning algorithm block. ResDouble modulates the laser in the EPprocess to achieve a higher horizontal and vertical engine resolution bytaking in 2 lines of binary (1 bit-per-pixel) data to generate 1 line ofoutput. NEM typically just maps pixel data (i.e., raster data) to Pcodedata (discussed below), but can also perform simple edge smoothing orfilter functions on pixel data. JustifiedDither is an error diffusionalgorithm tuned to produce favorable output of images that have beenscanned.

It is noted that the image processing algorithms implemented byenhancement blocks 228 are not limited to currently availablealgorithms, but include algorithms as yet to be developed. In addition,although image processing algorithms are discussed herein as beingimplemented exclusively by hardware enhancement blocks 228, suchalgorithms might also be implemented as software instructions stored inmemory 216 and executable on processor 212. However, such algorithms aretypically very complex algorithms that are better implemented inhardware in the interest of providing real-time processing performance.

Enhancement Blocks and Delay Window Size

As mentioned briefly above, each enhancement block 228 has a requirementfor how it views raster data 218 in order to properly process the data.Therefore, raster data 218 (i.e., pixels) must be presented within thetwo-dimensional delay window 226 in a format that is compatible witheach enhancement block 228. As discussed above, one component of thatpresentation format is the pixel bit depth, which the bit depth scalingblock 222 ensures will be compatible with a bit depth required by any ofthe enhancement blocks 228. However, another component of the rasterdata 218 presentation format is the number of pixels presented in thetwo-dimensional window 226 view of the raster data 218. Thus, the sizeof the delay window 226 presenting the raster data 218 is also animportant factor in presenting raster data 218 in a format that iscompatible with each enhancement block 228.

The number of pixels presented in the two-dimensional delay window 226(i.e., the size of the delay window 226) is important because algorithmsimplemented by enhancement blocks 228 typically must be able to view anumber of pixels around the given pixel being processed. Therefore, thegiven pixel being processed is generally located at the center of atwo-dimensional view of raster data 218, surrounded by other pixels thatan enhancement block 228 also needs to see. Various enhancement blocks228 require fewer or greater numbers of peripherally viewable pixels andtherefore require different sized delay windows 226 in order to haveappropriate views for processing the raster data 218. In order toprovide a view of the raster data 218 that is compatible with the windowsize requirements of all the enhancement blocks 228, the delay window226 is set to the largest size (i.e., the maximum number of rows andcolumns of pixel data) required by any of the enhancement blocks 228.This ensures that the delay window 226 is always large enough toaccommodate all of the implemented enhancement blocks 228 in ASIC 220,while not being needlessly too large. The delay window 226 sizes forvarious enhancement blocks 228 are generally indicated herein below inTables 1–4.

Print Engine Configuration and Delay Window Size and View Offsets

In addition, however, where an engine configuration includes more than asingle laser beam, additional views within the delay window 226 may berequired to support duplicate copies of a given enhancement block 228being used to process data for the additional laser beam(s). The size ofthe delay window 226 is therefore additionally influenced by the numberof “pipelines” or views being provided for the duplicate enhancementblocks 228 that are processing data for the additional laser beam(s).The delay window sizes and window view offsets for various engineconfigurations are generally indicated herein below in Tables 1–4.

FIG. 6 illustrates an example of a delay window 226 with more than oneview to support a print engine 232 that has a dual laser configuration.Assuming the native resolution of the print engine 232 is 600 dpi andthe raster data is 600 dpi data, each time the two lasers make ascanning pass over the 600 dpi raster data, two lines of the data areconsumed. Therefore, enhancement block 228(A) (e.g., a REt block)processing data for the first laser driver circuit 600, might have afirst view 602 of raster data within the delay window 226 that begins atrow 1 and goes to row 4. A duplicate REt enhancement block 228(B)processing data for the second laser driver circuit 604 would have asecond view 606 of the raster data within the delay window 226 thatbegins at row 2 and goes to row 5. Since the lasers consume two lines ata time, the views 602 and 606 that support the two lasers are offset byone row within the delay window 226. Therefore, each time the lasersscan out a line of data, rather than shifting out 1 row of data, thedelay window 226 shifts out two rows of data and shifts in two new rowsof data. This process is illustrated by FIG. 7.

FIG. 7 uses raster data lines 700 to illustrate two new lines/rows ofraster data 218 (pixels shown as “X”s) being shifted concurrently intoRAM 224 and delay window 226. At the same time, raster data lines 702represent old lines/rows of raster data 218 (pixels shown as “Z”s) beingshifted concurrently out of RAM 224 and delay window 226. Once the oldraster lines 702 are replaced with the new raster lines 700, the processof shifting all the raster data through window 226, column by column,begins again. As mentioned above with respect to FIG. 4, the process ofshifting data in and out of RAM 224 and delay window 226 may occur inways other than shifting lines of data after the delay window 226“traverses” RAM 224. For example, partial rows of lines of raster data218 might continually be shifted into RAM 224 as new columns of datashift into delay window 226.

It is noted that this disclosure contemplates engine configurationshaving various numbers of laser beams as exist on currently available EPprocess printers, or as may be developed in the future. Thus, engineconfigurations may have varying numbers of laser beams, including forexample, 1, 2, 3, 4 or more laser beams.

Input and Output Data Requirements for Various Enhancement Blocks andPrint Engine Configurations

As mentioned above, Tables 1–4 (shown below) outline the bit depthrequirements of various enhancement blocks 228, the size requirements(i.e., number of rows and columns of pixels) for the delay window 226for the various enhancement blocks 228, and the delay window viewoffsets for various print engine configurations. In general, Tables 1–4illustrate the input and output requirements of various enhancementblocks 228 based on particular laser print engine configurations.

TABLE 1 (Single Laser Beam-600 dpi Line Print Engine) Raster Data DataBit- Delay Delay Lines Resolution Depth Window Size Window ConsumedEnhancement (Vert. × (Bits Per (rows × View Per Scan of Block Horiz.)(dpi) Pixel) columns) Offset Laser(s) REt 300 × 300 1 9 × 9 0 0.5 REt600 × 600 1 5 × 7 0 1 Sideband 600 × 600 2 3 × 3 0 1 PhotoTone 600 × 3004 3 × 3 0 1 PhotoTone 600 × 600 4 3 × 3 0 1 ResDouble 1200 × 1200 1 4 ×3 0 2 JustifiedData 300 × 300 8 3 × 4 0 0.5

TABLE 2 (Dual Laser Beam-600 dpi Line Print Engine) Raster Data DataBit- Delay Delay Lines Resolution Depth Window Size Window ConsumedEnhancement (Vert. × (Bits Per (rows × View Per Scan of Block Horiz.)(dpi) Pixel) columns) Offset Laser(s) REt 300 × 300 1 9 × 9 0 1 REt 600× 600 1 5 × 7 1 2 Sideband 600 × 600 2 3 × 3 1 2 PhotoTone 600 × 300 4 3× 3 1 2 PhotoTone 600 × 600 4 3 × 3 1 2 ResDouble 1200 × 1200 1 4 × 3 24 JustifiedDithe 300 × 300 8 3 × 4 0 1

TABLE 3 (Single Laser Beam-1200 dpi Line Print Engine) Raster Data DataBit- Delay Delay Lines Resolution Depth Window Size Window ConsumedEnhancement (Vert. × (Bits Per (rows × View Per Scan of Block Horiz.)(dpi) Pixel) columns) Offset Laser(s) REt 300 × 300 1 9 × 9 0 0.25 REt600 × 600 1 5 × 7 0 0.5 Sideband 600 × 600 2 3 × 3 0 0.5 PhotoTone 600 ×300 4 3 × 3 0 0.5 PhotoTone 600 × 600 4 3 × 3 0 0.5 ResDouble 1200 ×1200 1 4 × 3 0 1 JustifiedData 300 × 300 8 3 × 4 0 0.25

TABLE 4 (Dual Laser Beam-1200 dpi Line Print Engine) Bit- Delay RasterData Data Depth Window Delay Lines Resolution (Bits Size Window ConsumedEnhancement (Vert. × Per (rows × View Per Scan of Block Horiz.) (dpi)Pixel) columns) Offset Laser(s) REt 300 × 300 1 9 × 9 0 0.5 REt 600 ×600 1 5 × 7 0 1 Sideband 600 × 600 2 3 × 3 0 1 PhotoTone 600 × 300 4 3 ×3 0 1 PhotoTone 600 × 600 4 3 × 3 0 1 ResDouble 1200 × 1200 1 4 × 3 1 2JustifiedDith 300 × 300 8 3 × 4 0 0.5

Selecting Enhancement Block Outputs to Drive Laser(s)

FIG. 8 is a block diagram illustrating the general manner in which anenhancement block 228 is selected to be used to drive the laser(s) inprint engine 232. The implemented enhancement blocks 228(1), 228(2), and228(3), typically each concurrently process consistently formattedraster data from delay window 226, whether or not the data in the delaywindow 226 is data intended to be processed by all of the enhancementblocks 228(1), 228(2), and 228(3). For example, the data within delaywindow 226 may be grayscale data intended to be processed by a PhotoToneenhancement block (e.g., enhancement block 228(1)). Enhancement blocks228(2) and 228(3), however, may be blocks that are intended forprocessing only black and white data, such as a REt block. In any event,each of the enhancement blocks 228(1), 228(2), 228(3) may continuallyprocess the raster data from delay window 226 as illustrated in FIG. 8by the arrows showing that each block has the same view of the delaywindow 226. In addition, however, job setup module 219 may also makestorage mode settings through selection bits within ASIC 220 that choosebetween enhancement blocks 228 with similar functions (e.g., betweenPhotoTone and Sideband). Job setup module 219 may also limit theselection process for output decision block 230 (see below) to a smallersubset group of enhancement blocks 228.

Output decision block 230 has a view of the data in the delay window 226and analyzes the data to determine the data type and which enhancementblock 228 output is appropriate for driving the laser driver circuit(s)800 on print engine 232. Output decision block 230 switches betweenvarious enhancement block 228 outputs depending on the type of databeing processed. Thus, if the delay window 226 data appears to begrayscale data, output decision block 230 may switch the output of aPhotoTone enhancement block (e.g., enhancement block 228(1)) to drivethe laser driver circuit(s) 800 on print engine 232.

Exemplary Methods for Processing Raster Data with Common Image WindowHardware

Example methods for processing raster data with common image windowhardware will now be described with primary reference to FIGS. 9 and 10.The methods apply generally to the exemplary embodiments of system 100discussed above with reference to FIGS. 1–8. The elements of thedescribed methods may be performed by any appropriate means, such as byintegrated circuit hardware blocks on an ASIC or by the execution ofprocessor-readable instructions defined on processor-readable media,such as a disk, a ROM or other such memory device.

FIGS. 9 and 10 are flow diagrams that show examples of general methodsfor processing raster data with common image window hardware. Referringfirst to the method illustrated in FIG. 9, at block 900, rasterized datais read from a memory. At block 902, the format of the rasterized datais determined. At block 904, the configuration of a print engine isdetermined. At block 906, a storage mode is set for a delay window basedon the data format and the engine configuration.

Referring to the method illustrated in FIG. 10, at block 1000, a printjob is received. At block 1002, the print job is stored as rasterizeddata in a memory. At block 1004, the configuration of a print engine isdetermined. At block 1006, the format of the rasterized data isdetermined. At block 1008, a target bit depth and a window size are setin a delay window storage mode to be compatible with a plurality ofimplemented enhancement blocks. At block 1010, rasterized data is readfrom memory. At block 1012, the rasterized data is presented/stored inthe delay window at the target bit depth. At block 1014, the rasterizeddata is stored in a RAM at a bit depth that is reduced from the targetbit depth. At block 1016, the rasterized data stored in the RAM at thereduced bit depth is shifted into the delay window at the target bitdepth. At block 1018, the data in the delay window is processed throughthe plurality of enhancement blocks. At block 1020, the output of one ofthe enhancement blocks is selected to drive the laser beam of a printengine.

Although the description above uses language that is specific tostructural features and/or methodological acts, it is to be understoodthat the invention defined in the appended claims is not limited to thespecific features or acts described. Rather, the specific features andacts are disclosed as exemplary forms of implementing the invention.

Additionally, while one or more methods have been disclosed by means offlow diagrams and text associated with the blocks of the flow diagrams,it is to be understood that the blocks do not necessarily have to beperformed in the order in which they were presented, and that analternative order may result in similar advantages.

1. A processor-readable medium comprising processor-executableinstructions configured for: reading rasterized data from a memory;determining a data format of the rasterized data; determining an engineconfiguration of a printer engine; and based on the data format and theengine configuration, setting a storage mode for a delay window.
 2. Aprocessor-readable medium as recited in claim 1, wherein the setting astorage mode further comprises: setting a bit depth for the delay windowthat is compatible for use by a plurality of enhancement blocks, theplurality of enhancement blocks configured to process the rasterizeddata; and setting a delay window size that is compatible for use by theplurality of enhancement blocks.
 3. A processor-readable medium asrecited in claim 2, wherein the setting a delay window size furthercomprises: fixing a number of rows of pixels to be presented in thedelay window; and fixing a number of columns of pixels to be presentedin the delay window.
 4. A processor-readable medium as recited in claim1, comprising further processor-executable instructions configured forscaling the rasterized data to a target bit depth that is compatible foruse by each of a plurality of enhancement blocks.
 5. Aprocessor-readable medium as recited in claim 4, comprising furtherprocessor-executable instructions configured for processing therasterized data through the plurality of enhancement blocks.
 6. Aprocessor-readable medium as recited in claim 5, comprising furtherprocessor-executable instructions configured for: analyzing therasterized data in the delay window; and based on the analyzing,selecting one of the plurality of enhancement blocks for output data. 7.A processor-readable medium as recited in claim 6, comprising furtherprocessor-executable instructions configured for: generating pulse widthmodulation codes from the output data; and driving a laser wit the pulsewidth modulation codes.
 8. A processor-readable medium as recited inclaim 1, wherein the engine configuration comprises a plurality oflasers, the setting a storage mode further comprising providing adifferent view of the delay window for each laser in the engineconfiguration.
 9. A processor-readable medium as recited in claim 8,wherein the providing a different view further comprises offsetting eachview from one another by a vertical line offset within the delay window.10. A processor-readable medium as recited in claim 1, wherein the dataformation comprises a data resolution and the engine configurationcomprises a number of lasers and a native resolution, theprocessor-readable medium comprising further processor-executableinstructions configured for: consuming an amount of rasterized datadining each pass of the number of lasers, the amount based on the dataresolution, the number of lasers, and the native resolution.
 11. Aprocessor-readable medium as recited in claim 1, comprising furtherprocessor-executable instructions configured for: scaling the rasterizeddata to target bit depth data; storing the target bit depth data in thedelay window; scaling the target bit depth data to a storage-efficientbit depth data; and storing the storage-efficient bit depth data in aRAM (random access memory).
 12. A processor-readable medium as recitedin claim 11, comprising further processor-executable instructionsconfigured for: accessing the storage-efficient bit depth data from theRAM; and storing the storage-efficient bit depth data in the delaywindow after re-scaling the storage-efficient bit depth data to targetbit depth data.
 13. An ASIC (application specific integrated circuit)comprising hardware blocks configured for: reading rasterized data froma memory; determining a data format of the rasterized data; determiningan engine configuration of a printer engine; and based on the dataformat and the engine configuration, setting a storage mode for a delaywindow.
 14. An ASIC as recited in claim 13, wherein the setting astorage mode further comprises: setting a bit depth for the delay windowtat is compatible for use by a plurality of enhancement blocks, theplurality of enhancement blocks configured to process the rasterizeddata; and setting a delay window size that is compatible for use by theplurality of enhancement blocks.
 15. An ASIC as recited in claim 13,wherein the setting a delay window size further comprises: fixing anumber of rows of pixels to be presented in the delay window; and fixinga number of columns of pixels to be presented in the delay window. 16.An ASIC as recited in claim 13, wherein the hardware blocks are furtherconfigured for scaling the rasterized data to a bit depth that iscompatible for use by each of a plurality of enhancement blocks.
 17. AnASIC as recited in claim 16, wherein the hardware blocks are furtherconfigured for processing the rasterized data through the plurality ofenhancement blocks.
 18. An ASIC as recited in claim 17, wherein thehardware blocks are further configured for: analyzing the rasterizeddata in the delay window; and based on the analyzing, selecting one ofthe plurality of enhancement blocks for output data.
 19. An ASIC asrecited in claim 18, wherein the hardware blocks are further configuredfor: generating pulse width modulation codes from the output data; anddriving a laser with the pulse width modulation codes.
 20. An ASIC asrecited in claim 13, wherein the engine configuration comprises aplurality of lasers, the setting a storage mode further comprisingproviding a different view of the delay window for each laser in theengine configuration.
 21. An ASIC as recited in claim 20, wherein theproviding a different view further comprises offsetting each view fromone another by a vertical line offset within the delay window.
 22. AnASIC as recited in claim 13, wherein the data format comprises a dataresolution and the engine configuration comprises a number of lasers anda native resolution, the processor-readable medium comprising furtherprocessor-executable instructions configured for: consuming an amount ofrasterized data during each pass of the number of lasers, the amountbased on the data resolution, the number of lasers, and the nativeresolution.
 23. An ASIC as recited in claim 13, wherein the hardwareblocks are further configured for: scaling the rasterized data to targetbit depth data; staring the target bit depth data in the delay window;scaling the target bit depth data to a storage-efficient bit depth data;and storing the storage-efficient bit depth data in a RAM (random accessmemory).
 24. An ASIC as recited in claim 23, wherein the hardware blocksare further configured for: accessing the storage-efficient bit depthdata from the RAM; and storing the storage-efficient bit depth data mthe delay window after re-scaling the storage-efficient bit depth datato target bit depth data.
 25. A method of processing data on a printercomprising: reading rasterized data from a memory; determining a dataformat of the rasterized data; determining an engine configuration of aprinter engine; and based on the data format and the engineconfiguration, setting a storage mode for a delay window.
 26. A methodas recited in claim 25, wherein the setting a storage made furthercomprises: setting a target bit depth for the delay window that iscompatible for use by a plurality of enhancement blocks; setting a delaywindow size that is compatible for use by a plurality of enhancementblocks configured to process the rasterized data; and setting adifferent view of the delay window for each laser in the engineconfiguration.
 27. A method as recited in claim 26, wherein the settinga delay window size further comprises: fixing a number of rows of pixelsto be presented in the delay window; and fixing a number of columns ofpixels to be presented in the delay window.
 28. A method as recited inclaim 25, further comprising: scaling the rasterized data to target bitdepth data; storing the target bit depth data in the delay window;scaling the target bit depth data to a storage-efficient bit depth data;and storing the storage-efficient bit depth data in a RAM (random accessmemory).
 29. A method as recited in claim 28, further comprising:accessing the storage-efficient bit depth data from the RAM; and storingthe storage-efficient bit depth data in the delay window afterre-scaling the storage efficient bit depth data to target bit depthdata.
 30. A printer comprising: means for reading rasterized data from amemory; means for determining a data format of the rasterized data;means for determining an engine configuration of a printer engine; andmeans for setting a storage mode for a delay window based on the dataformat and the engine configuration.
 31. A printer as recited in claim30, wherein the means for setting a storage mode further comprises:means for setting a size for the delay window to a largest size requiredby any of a plurality of implemented enhancement blocks; and means forpresenting the rasterized data in the delay window at a target bit depththat is the deepest bit depth required by any of the plurality ofimplemented enhancement blocks.
 32. A printer as recited in claim 31,further comprising: means for analyzing the rasterized data in the delaywindow; and means for determining, based on the analyzing, an output ofone of the plurality of enhancement blocks from which to developprocessed data.
 33. A printer as recited in claim 32, furthercomprising: means for generating pulse width modulation codes from theprocessed data; and means for driving a laser with the pulse widthmodulation codes.